const config = {
  compilerOptions: {
    /* Visit https://aka.ms/tsconfig to read more about this file */

    /* Projects */
    // "incremental": true, // 保存.tsbuildinfo文件以允许增量编译项目
    // "composite": true, // 启用允许TypeScript项目与项目引用一起使用的约束
    // "tsBuildInfoFile": "./.tsbuildinfo", // 指定.tsbuildinfo 增量编译文件的路径
    // "disableSourceOfProjectReferenceRedirect": true, // 在引用复合项目时，禁用首选源文件而不是声明文件
    // "disableSolutionSearching": true, // 编辑时，从多项目引用检查中选择一个项目。
    // "disableReferencedProjectLoad": true, // 减少TypeScript自动加载的项目数量

    /* Language and Environment */
    target: 'esnext', // 指定ECMAScript目标版本
    lib: ['DOM', 'ES2020', 'DOM.Iterable'], // 编译过程中需要引入的库文件的列表
    jsx: 'preserve', // 在 .tsx文件里支持JSX：  'preserve', 'react-native', or 'react'
    experimentalDecorators: true, // 启用装饰器
    // "emitDecoratorMetadata": true,  // 给源码里的装饰器声明加上设计类型元数据
    // "jsxFactory": "", // 指定生成目标为react JSX时，使用的JSX工厂函数，比如 React.createElement 或 h
    // "jsxFragmentFactory": "", // 指定针对React JSX发射时用于片段的JSX片段引用，'React.Fragment' or 'Fragment'
    // "jsxImportSource": "", // 指定使用“JSX:react-JSX*”时用于导入JSX工厂函数的模块说明符。
    // "reactNamespace": "", // 当目标为生成 "react" JSX时，指定 createElement和 __spread的调用对象
    // "noLib": true, // 不包含默认的库文件（ lib.d.ts）
    // "useDefineForClassFields": true, // 发出符合ECMAScript标准的类字段。
    // "moduleDetection": "auto", // 控制使用什么方法检测模块格式的JS文件。

    /* Modules */
    module: 'commonjs', // 指定生成哪个模块系统代码： "None"， "CommonJS"， "AMD"， "System"， "UMD"， "ES6"或 "ES2015"。
    // "rootDir": "./", // 编译器将从该目录开始查找和编译 TypeScript 文件
    moduleResolution: 'Node', // 决定如何处理模块。或者是"Node"对于Node.js/io.js，或者是"Classic"（默认）。
    // "baseUrl": "./", // 解析非相对模块名的基准目录 - 模块导入时绝对路径
    // 路径映射的列表
    // "paths": {
    //   "@/*": ["src/*"] // 用于配置模块路径的映射关系
    // },
    // "rootDirs": [], // 	根（root）文件夹列表，表示运行时组合工程结构的内容。
    // "typeRoots": [], // 	要包含的类型声明文件路径列表。
    // "types": [], // 	要包含的类型声明文件名列表
    // "allowUmdGlobalAccess": true, // 允许从模块访问UMD全局变量。
    // "moduleSuffixes": [],                             /* List of file name suffixes to search when resolving a module. */
    allowImportingTsExtensions: true, // 允许导入包含TypeScript文件扩展名。需要设置“--moduleResolution bundler”以及“--noEmit”或“--emitDeclarationOnly”。
    // "resolvePackageJsonExports": true,                /* Use the package.json 'exports' field when resolving package imports. */
    // "resolvePackageJsonImports": true,                /* Use the package.json 'imports' field when resolving imports. */
    // "customConditions": [],                           /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
    // "noUncheckedSideEffectImports": true, // 检查副作用导入
    // "resolveJsonModule": true, // 允许导入 JSON 文件作为模块
    // "allowArbitraryExtensions": true,                 /* Enable importing files with any extension, provided a declaration file is present. */
    // "noResolve": true,                                /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */

    /* JavaScript Support */
    allowJs: true, // 允许编译 JS
    // "checkJs": true,                                  /* Enable error reporting in type-checked JavaScript files. */
    // "maxNodeModuleJsDepth": 1,                        /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */

    /* Emit */
    // "declaration": true,                              /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
    // "declarationMap": true,                           /* Create sourcemaps for d.ts files. */
    // "emitDeclarationOnly": true, // 仅输出d.ts文件，不输出JavaScript文件。
    // "sourceMap": true,                                /* Create source map files for emitted JavaScript files. */
    // "inlineSourceMap": true,                          /* Include sourcemap files inside the emitted JavaScript. */
    noEmit: true, // 禁止编译器输出任何文件。只进行类型检查
    // "outFile": "./",                                  /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
    // "outDir": "./", // 编译后的 JavaScript 文件输出目录
    // "removeComments": true,                           /* Disable emitting comments. */
    // "importHelpers": true,                            /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
    // "downlevelIteration": true,                       /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
    // "sourceRoot": "",                                 /* Specify the root path for debuggers to find the reference source code. */
    // "mapRoot": "",                                    /* Specify the location where debugger should locate map files instead of generated locations. */
    // "inlineSources": true,                            /* Include source code in the sourcemaps inside the emitted JavaScript. */
    // "emitBOM": true,                                  /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
    // "newLine": "crlf",                                /* Set the newline character for emitting files. */
    // "stripInternal": true,                            /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
    // "noEmitHelpers": true,                            /* Disable generating custom helper functions like '__extends' in compiled output. */
    // "noEmitOnError": true,                            /* Disable emitting files if any type checking errors are reported. */
    // "preserveConstEnums": true,                       /* Disable erasing 'const enum' declarations in generated code. */
    // "declarationDir": "./",                           /* Specify the output directory for generated declaration files. */

    /* Interop Constraints */
    isolatedModules: true, // 每个文件作为单独的模块进行编译
    // "verbatimModuleSyntax": true,                     /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
    // "isolatedDeclarations": true,                     /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */
    // "allowSyntheticDefaultImports": true, // 允许在导入模块时使用默认导入语法
    // "esModuleInterop": true, // 允许 import 引入 export defatult 默认文件
    // "preserveSymlinks": true,                         /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
    // "forceConsistentCasingInFileNames": true, // 强制文件名的大小写一致性

    /* Type Checking */
    strict: true // 严格模式
    // "noImplicitAny": false, // any 类型时报错
    // "strictNullChecks": true,                         /* When type checking, take into account 'null' and 'undefined'. */
    // "strictFunctionTypes": true,                      /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
    // "strictBindCallApply": true,                      /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
    // "strictPropertyInitialization": true,             /* Check for class properties that are declared but not set in the constructor. */
    // "strictBuiltinIteratorReturn": true,              /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */
    // "noImplicitThis": true,                           /* Enable error reporting when 'this' is given the type 'any'. */
    // "useUnknownInCatchVariables": true,               /* Default catch clause variables as 'unknown' instead of 'any'. */
    // "alwaysStrict": true,                             /* Ensure 'use strict' is always emitted. */
    // "noUnusedLocals": false, //   若有未使用的局部变量则抛错
    // "noUnusedParameters": false, // 若有未使用的参数则抛错
    // "exactOptionalPropertyTypes": true,               /* Interpret optional property types as written, rather than adding 'undefined'. */
    // "noImplicitReturns": true,                        /* Enable error reporting for codepaths that do not explicitly return in a function. */
    // "noFallthroughCasesInSwitch": true, // 检查是否存在漏写的 break 或 return 语句
    // "noUncheckedIndexedAccess": true,                 /* Add 'undefined' to a type when accessed using an index. */
    // "noImplicitOverride": true,                       /* Ensure overriding members in derived classes are marked with an override modifier. */
    // "noPropertyAccessFromIndexSignature": true,       /* Enforces using indexed accessors for keys declared using an indexed type. */
    // "allowUnusedLabels": true,                        /* Disable error reporting for unused labels. */
    // "allowUnreachableCode": true,                     /* Disable error reporting for unreachable code. */

    // "skipDefaultLibCheck": true,                      /* Skip type checking .d.ts files that are included with TypeScript. */
    // "skipLibCheck": true // 忽略所有的声明文件（ *.d.ts）的类型检查
    // "plugins": [
    //   {
    //     "name": "typescript-plugin-css-modules" // css module 提示
    //   }
    // ]
  },
  include: [],
  exclude: []
};
